Bug 384940 – handle rejecting jobs and authentication meaningfully
authorMatthias Clasen <matthiasc@src.gnome.org>
Tue, 15 Jul 2008 17:34:34 +0000 (17:34 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Tue, 15 Jul 2008 17:34:34 +0000 (17:34 +0000)
        Patch by Marek Kasik, icons by Mike Langlie:
        * gtk/gtk.symbols:
        * gtk/gtkprintbackend.h:
        * gtk/gtkprinter.[hc]: Add new paused and accepting-jobs properties
        and getters/setters.

        * gtk/gtkstock.h:
        * gtk/gtkiconfactory.c:
        * gtk/Makefile.am:
        * gtk/stock-icons/{16,24}/gtk-print-paused.{png,svg}: New icon.

        * modules/printbackends/cups/gtkprintbackendcups.c:
        * gtk/gtkprintunixdialog.c: Handle paused and job-rejecting
        printers.

svn path=/trunk/; revision=20838

18 files changed:
ChangeLog
docs/reference/ChangeLog
docs/reference/gtk/Makefile.am
docs/reference/gtk/gtk-sections.txt
docs/reference/gtk/tmpl/gtkstock.sgml
gtk/Makefile.am
gtk/gtk.symbols
gtk/gtkiconfactory.c
gtk/gtkprintbackend.h
gtk/gtkprinter.c
gtk/gtkprinter.h
gtk/gtkprintunixdialog.c
gtk/gtkstock.h
gtk/stock-icons/16/gtk-print-paused.png [new file with mode: 0644]
gtk/stock-icons/16/gtk-print-paused.svg [new file with mode: 0644]
gtk/stock-icons/24/gtk-print-paused.png [new file with mode: 0644]
gtk/stock-icons/24/gtk-print-paused.svg [new file with mode: 0644]
modules/printbackends/cups/gtkprintbackendcups.c

index 411220f01db4ae134d296a6ab61c5850c8cdfa69..4fd4a805a53ec7fb1cfedc3b9986eccaf5e57091 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2008-07-15  Matthias Clasen  <mclasen@redhat.com>
+
+       Bug 384940 – handle rejecting jobs and authentication meaningfully
+
+       Patch by Marek Kasik, icons by Mike Langlie:
+       * gtk/gtk.symbols:
+       * gtk/gtkprintbackend.h:
+       * gtk/gtkprinter.[hc]: Add new paused and accepting-jobs properties
+       and getters/setters.
+
+       * gtk/gtkstock.h:
+       * gtk/gtkiconfactory.c:
+       * gtk/Makefile.am:
+       * gtk/stock-icons/{16,24}/gtk-print-paused.{png,svg}: New icon.
+
+       * modules/printbackends/cups/gtkprintbackendcups.c: 
+       * gtk/gtkprintunixdialog.c: Handle paused and job-rejecting 
+       printers.
+
 2008-07-15  Matthias Clasen  <mclasen@redhat.com>
 
        * configure.in: Add a test to see if GIO can sniff image data,
index fffa719c57ff9d3dd56e2a9ede99e96ac1020905..ecbd7f0bcd5d92c1ebb58212aa1ad6dd09791741 100644 (file)
@@ -1,3 +1,10 @@
+2008-07-15  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/Makefile.am:
+       * gtk/tmpl/gtkstock.sgml: Add new icon.
+
+       * gtk/gtk-sections.txt: Add new GtkPrinter functions
+
 2008-07-14  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/tmpl/gtklabel.sgml: Fix markup
index fa75b475166fcc136353e2edf455ba0a045ad78f..16155f4dcd5009e19ac434dbb18653c0ba5f7cf5 100644 (file)
@@ -242,6 +242,7 @@ HTML_IMAGES = \
        $(top_srcdir)/gtk/stock-icons/24/gtk-preferences.png            \
        $(top_srcdir)/gtk/stock-icons/24/gtk-print.png                  \
        $(top_srcdir)/gtk/stock-icons/24/gtk-print-error.png            \
+       $(top_srcdir)/gtk/stock-icons/24/gtk-print-paused.png           \
        $(top_srcdir)/gtk/stock-icons/24/gtk-print-preview.png          \
        $(top_srcdir)/gtk/stock-icons/24/gtk-print-report.png           \
        $(top_srcdir)/gtk/stock-icons/24/gtk-print-warning.png          \
index 84638857f7a4bd51167c2aa60ac5c0cf530f8760..6c5d9a1a4b7e7bbed0c6dd6467ea04abb2b03eb4 100644 (file)
@@ -6441,6 +6441,8 @@ gtk_printer_get_location
 gtk_printer_get_icon_name
 gtk_printer_get_job_count
 gtk_printer_is_active
+gtk_printer_is_paused
+gtk_printer_is_accepting_jobs
 gtk_printer_is_virtual
 gtk_printer_is_default
 gtk_printer_accepts_ps
index c287359385f372c17fa56d4b8b32bc92fa5a4a7e..65e6a509b93b44e883431de5d62daa4cc89ad1b5 100644 (file)
@@ -755,13 +755,22 @@ The "Print" item.
 
 <!-- ##### MACRO GTK_STOCK_PRINT_ERROR ##### -->
 <para>
-The "Print Error" item.
+The "Print Error" icon.
 <inlinegraphic fileref="gtk-print-error.png" format="PNG"></inlinegraphic>
 </para>
 
 @Since: 2.14
 
 
+<!-- ##### MACRO GTK_STOCK_PRINT_PAUSED ##### -->
+<para>
+The "Print Paused" icon.
+<inlinegraphic fileref="gtk-print-paused.png" format="PNG"></inlinegraphic>
+</para>
+
+@Since: 2.14
+
+
 <!-- ##### MACRO GTK_STOCK_PRINT_PREVIEW ##### -->
 <para>
 The "Print Preview" item.
@@ -772,7 +781,7 @@ The "Print Preview" item.
 
 <!-- ##### MACRO GTK_STOCK_PRINT_REPORT ##### -->
 <para>
-The "Print Report" item.
+The "Print Report" icon.
 <inlinegraphic fileref="gtk-print-report.png" format="PNG"></inlinegraphic>
 </para>
 
@@ -781,7 +790,7 @@ The "Print Report" item.
 
 <!-- ##### MACRO GTK_STOCK_PRINT_WARNING ##### -->
 <para>
-The "Print Warning" item.
+The "Print Warning" icon.
 <inlinegraphic fileref="gtk-print-warning.png" format="PNG"></inlinegraphic>
 </para>
 
index 052dabfed39b67541b18aea060f42b535d251fbf..cc07d4d4c25b350d2857bee6e0be185ae4fd7e11 100644 (file)
@@ -1000,6 +1000,7 @@ STOCK_ICONS = \
        stock-icons/16/gtk-preferences.png              \
        stock-icons/16/gtk-print.png                    \
        stock-icons/16/gtk-print-error.png              \
+       stock-icons/16/gtk-print-paused.png             \
        stock-icons/16/gtk-print-preview.png            \
        stock-icons/16/gtk-print-report.png             \
        stock-icons/16/gtk-print-warning.png            \
@@ -1109,6 +1110,7 @@ STOCK_ICONS = \
        stock-icons/24/gtk-preferences.png              \
        stock-icons/24/gtk-print.png                    \
        stock-icons/24/gtk-print-error.png              \
+       stock-icons/24/gtk-print-paused.png             \
        stock-icons/24/gtk-print-preview.png            \
        stock-icons/24/gtk-print-report.png             \
        stock-icons/24/gtk-print-warning.png            \
index 9a25a7872627726560c55a0d6a9ffa898b7fb289..ad6f331b210d67a7246d58305372996c531de83f 100644 (file)
@@ -2691,12 +2691,16 @@ gtk_printer_set_description
 gtk_printer_set_has_details
 gtk_printer_set_icon_name
 gtk_printer_set_is_active
+gtk_printer_set_is_paused
+gtk_printer_set_is_accepting_jobs
 gtk_printer_set_is_default
 gtk_printer_set_is_new
 gtk_printer_set_job_count
 gtk_printer_set_location
 gtk_printer_set_state_message
 gtk_printer_is_active
+gtk_printer_is_paused
+gtk_printer_is_accepting_jobs
 gtk_printer_is_new
 gtk_printer_is_default
 #endif
index 6bcc09f9c331a995fb7174cf188d66d3c6ca99d6..43773e4f91bd0027658f25ec76d5c2bba1508345 100644 (file)
@@ -452,6 +452,7 @@ get_default_icons (GtkIconFactory *factory)
   register_stock_icon (factory, GTK_STOCK_PREFERENCES);
   register_stock_icon (factory, GTK_STOCK_PRINT);
   register_stock_icon (factory, GTK_STOCK_PRINT_ERROR);
+  register_stock_icon (factory, GTK_STOCK_PRINT_PAUSED);
   register_stock_icon (factory, GTK_STOCK_PRINT_PREVIEW);
   register_stock_icon (factory, GTK_STOCK_PRINT_REPORT);
   register_stock_icon (factory, GTK_STOCK_PRINT_WARNING);
index a33f6d80fe961f30bf91de9d5b6f0179a8ced7b3..389ef00a53caeb9cae6b445fb83aa1c323047c18 100644 (file)
@@ -149,30 +149,32 @@ void        gtk_print_backend_set_list_done        (GtkPrintBackend         *bac
 
 /* Backend-only functions for GtkPrinter */
 
-GtkPrinter *gtk_printer_new               (const char      *name,
-                                          GtkPrintBackend *backend,
-                                          gboolean         is_virtual);
-gboolean    gtk_printer_is_new            (GtkPrinter      *printer);
-void        gtk_printer_set_is_new        (GtkPrinter      *printer,
-                                          gboolean         val);
-void        gtk_printer_set_is_active     (GtkPrinter      *printer,
-                                          gboolean         val);
-void        gtk_printer_set_has_details   (GtkPrinter      *printer,
-                                          gboolean         val);
-void        gtk_printer_set_is_default    (GtkPrinter      *printer,
-                                          gboolean         val);
-void        gtk_printer_set_icon_name     (GtkPrinter      *printer,
-                                          const gchar     *icon);
-gboolean    gtk_printer_set_job_count     (GtkPrinter      *printer,
-                                          gint             count);
-gboolean    gtk_printer_set_location      (GtkPrinter      *printer,
-                                          const gchar     *location);
-gboolean    gtk_printer_set_description   (GtkPrinter      *printer,
-                                          const gchar     *description);
-gboolean    gtk_printer_set_state_message (GtkPrinter      *printer,
-                                          const gchar     *message);
-void        gtk_printer_set_is_active     (GtkPrinter      *printer,
-                                          gboolean         active);
+GtkPrinter *gtk_printer_new                   (const char      *name,
+                                              GtkPrintBackend *backend,
+                                              gboolean         is_virtual);
+gboolean    gtk_printer_is_new                (GtkPrinter      *printer);
+void        gtk_printer_set_is_new            (GtkPrinter      *printer,
+                                              gboolean         val);
+void        gtk_printer_set_is_active         (GtkPrinter      *printer,
+                                              gboolean         val);
+gboolean    gtk_printer_set_is_paused         (GtkPrinter      *printer,
+                                              gboolean         val);
+gboolean    gtk_printer_set_is_accepting_jobs (GtkPrinter      *printer,
+                                              gboolean         val);
+void        gtk_printer_set_has_details       (GtkPrinter      *printer,
+                                              gboolean         val);
+void        gtk_printer_set_is_default        (GtkPrinter      *printer,
+                                              gboolean         val);
+void        gtk_printer_set_icon_name         (GtkPrinter      *printer,
+                                              const gchar     *icon);
+gboolean    gtk_printer_set_job_count         (GtkPrinter      *printer,
+                                              gint             count);
+gboolean    gtk_printer_set_location          (GtkPrinter      *printer,
+                                              const gchar     *location);
+gboolean    gtk_printer_set_description       (GtkPrinter      *printer,
+                                              const gchar     *description);
+gboolean    gtk_printer_set_state_message     (GtkPrinter      *printer,
+                                              const gchar     *message);
 
 
 G_END_DECLS
index 1ce3ed55b1849be9113949e6105923c051b0396d..96c0ec7815529df3990283ec00f16d192433d791 100644 (file)
@@ -43,13 +43,15 @@ struct _GtkPrinterPrivate
   gchar *description;
   gchar *icon_name;
 
-  guint is_active   : 1;
-  guint is_new      : 1;
-  guint is_virtual  : 1;
-  guint is_default  : 1;
-  guint has_details : 1;
-  guint accepts_pdf : 1;
-  guint accepts_ps  : 1;
+  guint is_active         : 1;
+  guint is_paused         : 1;
+  guint is_accepting_jobs : 1;
+  guint is_new            : 1;
+  guint is_virtual        : 1;
+  guint is_default        : 1;
+  guint has_details       : 1;
+  guint accepts_pdf       : 1;
+  guint accepts_ps        : 1;
 
   gchar *state_message;  
   gint job_count;
@@ -72,7 +74,9 @@ enum {
   PROP_ICON_NAME,
   PROP_JOB_COUNT,
   PROP_ACCEPTS_PDF,
-  PROP_ACCEPTS_PS
+  PROP_ACCEPTS_PS,
+  PROP_PAUSED,
+  PROP_ACCEPTING_JOBS
 };
 
 static guint signals[LAST_SIGNAL] = { 0 };
@@ -179,6 +183,37 @@ gtk_printer_class_init (GtkPrinterClass *class)
                                                     0,
                                                     GTK_PARAM_READABLE));
 
+  /**
+   * GtkPrinter:paused:
+   *
+   * This property is %TRUE if this printer is paused. 
+   * A paused printer still accepts jobs, but it does 
+   * not print them.
+   *
+   * Since: 2.14
+   */
+  g_object_class_install_property (G_OBJECT_CLASS (class),
+                                   PROP_PAUSED,
+                                   g_param_spec_boolean ("paused",
+                                                        P_("Paused Printer"),
+                                                        P_("TRUE if this printer is paused"),
+                                                        FALSE,
+                                                        GTK_PARAM_READABLE));
+  /**
+   * GtkPrinter:accepting-jobs:
+   *
+   * This property is %TRUE if the printer is accepting jobs.
+   *
+   * Since: 2.14
+   */ 
+  g_object_class_install_property (G_OBJECT_CLASS (class),
+                                   PROP_ACCEPTING_JOBS,
+                                   g_param_spec_boolean ("accepting-jobs",
+                                                        P_("Accepting Jobs"),
+                                                        P_("TRUE if this printer is accepting new jobs"),
+                                                        TRUE,
+                                                        GTK_PARAM_READABLE));
+
   /**
    * GtkPrinter::details-acquired:
    * @printer: the #GtkPrinter on which the signal is emitted
@@ -213,6 +248,8 @@ gtk_printer_init (GtkPrinter *printer)
   priv->icon_name = NULL;
 
   priv->is_active = TRUE;
+  priv->is_paused = FALSE;
+  priv->is_accepting_jobs = TRUE;
   priv->is_new = TRUE;
   priv->has_details = FALSE;
   priv->accepts_pdf = TRUE;
@@ -327,6 +364,12 @@ gtk_printer_get_property (GObject    *object,
     case PROP_ACCEPTS_PS:
       g_value_set_boolean (value, priv->accepts_ps);
       break;
+    case PROP_PAUSED:
+      g_value_set_boolean (value, priv->is_paused);
+      break;
+    case PROP_ACCEPTING_JOBS:
+      g_value_set_boolean (value, priv->is_accepting_jobs);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -635,6 +678,79 @@ gtk_printer_set_is_active (GtkPrinter *printer,
   printer->priv->is_active = val;
 }
 
+/**
+ * gtk_printer_is_paused:
+ * @printer: a #GtkPrinter
+ * 
+ * Returns whether the printer is currently paused.
+ * A paused printer still accepts jobs, but it is not
+ * printing them.
+ * 
+ * Return value: %TRUE if @printer is paused
+ *
+ * Since: 2.14
+ */
+gboolean
+gtk_printer_is_paused (GtkPrinter *printer)
+{
+  g_return_val_if_fail (GTK_IS_PRINTER (printer), TRUE);
+  
+  return printer->priv->is_paused;
+}
+
+gboolean
+gtk_printer_set_is_paused (GtkPrinter *printer,
+                          gboolean    val)
+{
+  GtkPrinterPrivate *priv;
+
+  g_return_val_if_fail (GTK_IS_PRINTER (printer), FALSE);
+
+  priv = printer->priv;
+
+  if (val == priv->is_paused)
+    return FALSE;
+
+  priv->is_paused = val;
+
+  return TRUE;
+}
+
+/**
+ * gtk_printer_is_accepting_jobs:
+ * @printer: a #GtkPrinter
+ * 
+ * Returns whether the printer is accepting jobs
+ * 
+ * Return value: %TRUE if @printer is accepting jobs
+ *
+ * Since: 2.14
+ */
+gboolean
+gtk_printer_is_accepting_jobs (GtkPrinter *printer)
+{
+  g_return_val_if_fail (GTK_IS_PRINTER (printer), TRUE);
+  
+  return printer->priv->is_accepting_jobs;
+}
+
+gboolean
+gtk_printer_set_is_accepting_jobs (GtkPrinter *printer,
+                                  gboolean val)
+{
+  GtkPrinterPrivate *priv;
+
+  g_return_val_if_fail (GTK_IS_PRINTER (printer), FALSE);
+
+  priv = printer->priv;
+
+  if (val == priv->is_accepting_jobs)
+    return FALSE;
+
+  priv->is_accepting_jobs = val;
+
+  return TRUE;
+}
 
 /**
  * gtk_printer_is_virtual:
index e3c8dd71b7256e201c7cf0f5ff423e92d533a016..7b74da72610c205371aa4452c3e122ec16a2cd93 100644 (file)
@@ -99,6 +99,8 @@ G_CONST_RETURN gchar    *gtk_printer_get_location          (GtkPrinter      *pri
 G_CONST_RETURN gchar    *gtk_printer_get_icon_name         (GtkPrinter      *printer);
 gint                     gtk_printer_get_job_count         (GtkPrinter      *printer);
 gboolean                 gtk_printer_is_active             (GtkPrinter      *printer);
+gboolean                 gtk_printer_is_paused             (GtkPrinter      *printer);
+gboolean                 gtk_printer_is_accepting_jobs     (GtkPrinter      *printer);
 gboolean                 gtk_printer_is_virtual            (GtkPrinter      *printer);
 gboolean                 gtk_printer_is_default            (GtkPrinter      *printer);
 gboolean                 gtk_printer_accepts_pdf           (GtkPrinter      *printer);
index 0c8d27b76a4f3267946d479672dc90de469d8cd5..783ea4454c3678983b29d2919dd92e5054f39075 100644 (file)
@@ -96,6 +96,12 @@ static gboolean dialog_get_collate                 (GtkPrintUnixDialog *dialog);
 static gboolean dialog_get_reverse                 (GtkPrintUnixDialog *dialog);
 static gint     dialog_get_n_copies                (GtkPrintUnixDialog *dialog);
 
+static void     set_cell_sensitivity_func          (GtkTreeViewColumn *tree_column,
+                                                   GtkCellRenderer   *cell,
+                                                   GtkTreeModel      *model,
+                                                   GtkTreeIter       *iter,
+                                                   gpointer           data);
+
 /* GtkBuildable */
 static void gtk_print_unix_dialog_buildable_init                    (GtkBuildableIface *iface);
 static GObject *gtk_print_unix_dialog_buildable_get_internal_child  (GtkBuildable *buildable,
@@ -309,12 +315,12 @@ add_custom_button_to_dialog (GtkDialog   *dialog,
   gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, response_id);
 }
 
-/* Presents an overwrite confirmation dialog ("print to file" backend).
+/* This function handles error messages before printing.
  */
 static gboolean
-overwrite_confirmation_dialog (GtkPrintUnixDialog *print_dialog,
-                               gint                print_dialog_response_id,
-                               gpointer            data)
+error_dialogs (GtkPrintUnixDialog *print_dialog,
+               gint                print_dialog_response_id,
+               gpointer            data)
 {
   GtkPrintUnixDialogPrivate *priv = print_dialog->priv;
   GtkPrinterOption          *option = NULL;
@@ -330,6 +336,8 @@ overwrite_confirmation_dialog (GtkPrintUnixDialog *print_dialog,
     {
       printer = gtk_print_unix_dialog_get_selected_printer (print_dialog);
 
+      /* Shows overwrite confirmation dialog in the case of printing to file which
+       * already exists. */
       if (printer != NULL && gtk_printer_is_virtual (printer))
         {
           option = gtk_printer_option_set_lookup (priv->options,
@@ -418,7 +426,7 @@ gtk_print_unix_dialog_init (GtkPrintUnixDialog *dialog)
 
   g_signal_connect (dialog,
                     "response",
-                    (GCallback) overwrite_confirmation_dialog,
+                    (GCallback) error_dialogs,
                     NULL);
 
   priv->preview_button = gtk_button_new_from_stock (GTK_STOCK_PRINT_PREVIEW);
@@ -568,6 +576,28 @@ gtk_print_unix_dialog_buildable_get_internal_child (GtkBuildable *buildable,
   return parent_buildable_iface->get_internal_child (buildable, builder, childname);
 }
 
+/* This function controls "sensitive" property of GtkCellRenderer based on pause
+ * state of printers. */
+void set_cell_sensitivity_func (GtkTreeViewColumn *tree_column,
+                                GtkCellRenderer   *cell,
+                                GtkTreeModel      *tree_model,
+                                GtkTreeIter       *iter,
+                                gpointer           data)
+{
+  GtkPrinter *printer;
+  
+  gtk_tree_model_get (tree_model, iter, PRINTER_LIST_COL_PRINTER_OBJ, &printer, -1);
+
+  if (printer != NULL && !gtk_printer_is_accepting_jobs (printer))
+    g_object_set (cell,
+                  "sensitive", FALSE,
+                  NULL);
+  else
+    g_object_set (cell,
+                  "sensitive", TRUE,
+                  NULL);
+}
+
 static void
 printer_status_cb (GtkPrintBackend    *backend, 
                   GtkPrinter         *printer, 
@@ -575,6 +605,7 @@ printer_status_cb (GtkPrintBackend    *backend,
 {
   GtkPrintUnixDialogPrivate *priv = dialog->priv;
   GtkTreeIter *iter;
+  GtkTreeSelection *selection;
 
   iter = g_object_get_data (G_OBJECT (printer), "gtk-print-tree-iter");
 
@@ -585,6 +616,10 @@ printer_status_cb (GtkPrintBackend    *backend,
                       PRINTER_LIST_COL_LOCATION, gtk_printer_get_location (printer),
                       -1);
 
+  /* When the pause state change then we need to update sensitive property
+   * of GTK_RESPONSE_OK button inside of selected_printer_changed function. */
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->printer_treeview));
+  selected_printer_changed (selection, dialog);
 }
 
 static void
@@ -1410,6 +1445,21 @@ selected_printer_changed (GtkTreeSelection   *selection,
                          PRINTER_LIST_COL_PRINTER_OBJ, &printer,
                          -1);
     }
+
+  /* sets GTK_RESPONSE_OK button sensitive/insensitive depending on whether the printer 
+   * accepts/rejects jobs */
+  if (printer != NULL)
+    {
+      if (!gtk_printer_is_accepting_jobs (printer))
+        {
+          gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, FALSE);
+        }
+      else
+        {
+          if (priv->current_printer == printer && gtk_printer_has_details (printer))
+            gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, TRUE);
+        }
+    }
   
   if (printer != NULL && !gtk_printer_has_details (printer))
     {
@@ -1445,7 +1495,8 @@ selected_printer_changed (GtkTreeSelection   *selection,
 
   priv->printer_capabilities = 0;
   
-  gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, TRUE);
+  if (gtk_printer_is_accepting_jobs (printer))
+    gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, TRUE);
   priv->current_printer = printer;
 
   if (printer != NULL)
@@ -1659,6 +1710,7 @@ create_main_page (GtkPrintUnixDialog *dialog)
                                                     "icon-name",
                                                     PRINTER_LIST_COL_ICON,
                                                     NULL);
+  gtk_tree_view_column_set_cell_data_func (column, renderer, set_cell_sensitivity_func, NULL, NULL);
   gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
 
   renderer = gtk_cell_renderer_text_new ();
@@ -1667,6 +1719,7 @@ create_main_page (GtkPrintUnixDialog *dialog)
                                                     "text",
                                                     PRINTER_LIST_COL_NAME,
                                                     NULL);
+  gtk_tree_view_column_set_cell_data_func (column, renderer, set_cell_sensitivity_func, NULL, NULL);
   gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
   
   renderer = gtk_cell_renderer_text_new ();
@@ -1675,6 +1728,7 @@ create_main_page (GtkPrintUnixDialog *dialog)
                                                     "text",
                                                     PRINTER_LIST_COL_LOCATION,
                                                     NULL);
+  gtk_tree_view_column_set_cell_data_func (column, renderer, set_cell_sensitivity_func, NULL, NULL);
   gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
 
   renderer = gtk_cell_renderer_text_new ();
@@ -1684,6 +1738,7 @@ create_main_page (GtkPrintUnixDialog *dialog)
                                                     "text",
                                                     PRINTER_LIST_COL_STATE,
                                                     NULL);
+  gtk_tree_view_column_set_cell_data_func (column, renderer, set_cell_sensitivity_func, NULL, NULL);
   gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
   
   gtk_widget_show (treeview);
index f259d89dec0c76d11d9445d66619d5c20b934409..8fef6d479a24f5f120f5d9472f712e951aefc3c7 100644 (file)
@@ -148,6 +148,7 @@ void          gtk_stock_set_translate_func (const gchar      *domain,
 #define GTK_STOCK_PREFERENCES      "gtk-preferences"
 #define GTK_STOCK_PRINT            "gtk-print"
 #define GTK_STOCK_PRINT_ERROR      "gtk-print-error"
+#define GTK_STOCK_PRINT_PAUSED     "gtk-print-paused"
 #define GTK_STOCK_PRINT_PREVIEW    "gtk-print-preview"
 #define GTK_STOCK_PRINT_REPORT     "gtk-print-report"
 #define GTK_STOCK_PRINT_WARNING    "gtk-print-warning"
diff --git a/gtk/stock-icons/16/gtk-print-paused.png b/gtk/stock-icons/16/gtk-print-paused.png
new file mode 100644 (file)
index 0000000..ebd5ac6
Binary files /dev/null and b/gtk/stock-icons/16/gtk-print-paused.png differ
diff --git a/gtk/stock-icons/16/gtk-print-paused.svg b/gtk/stock-icons/16/gtk-print-paused.svg
new file mode 100644 (file)
index 0000000..fb492c8
--- /dev/null
@@ -0,0 +1,490 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="16"
+   height="16"
+   id="svg4908"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docbase="/home/andreas/project/gtk/24"
+   sodipodi:docname="gtk-print-paused.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/mkasik/Devel/Bugs/gtk+384940/icons/GTK/16x16/gtk-print-paused.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90"
+   sodipodi:modified="true">
+  <defs
+     id="defs4910">
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7658"
+       id="linearGradient3441"
+       gradientUnits="userSpaceOnUse"
+       x1="43.882969"
+       y1="-42.861526"
+       x2="39.987103"
+       y2="-42.861526"
+       gradientTransform="translate(0,4.0216698)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3460"
+       id="linearGradient3456"
+       x1="44.287689"
+       y1="-39.951534"
+       x2="36.799889"
+       y2="-39.951534"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1101512,0,4.348586)" />
+    <linearGradient
+       id="linearGradient7658"
+       inkscape:collect="always">
+      <stop
+         id="stop7660"
+         offset="0"
+         style="stop-color:#d3d7cf" />
+      <stop
+         id="stop7662"
+         offset="1"
+         style="stop-color:#eeeeec" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7658"
+       id="linearGradient3447"
+       gradientUnits="userSpaceOnUse"
+       x1="43.882969"
+       y1="-42.861526"
+       x2="39.987103"
+       y2="-42.861526" />
+    <linearGradient
+       id="linearGradient3460">
+      <stop
+         id="stop3462"
+         offset="0"
+         style="stop-color:#343533;stop-opacity:1;" />
+      <stop
+         id="stop3464"
+         offset="1"
+         style="stop-color:#343533;stop-opacity:0.5;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3460"
+       id="linearGradient3458"
+       x1="44.287689"
+       y1="-39.951534"
+       x2="36.799889"
+       y2="-39.951534"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1101512,0,4.7915781)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3061">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop3063" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop3065" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3061"
+       id="radialGradient2559"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.025362,0,-1.055427)"
+       cx="40.393475"
+       cy="41.613941"
+       fx="40.393475"
+       fy="41.613941"
+       r="6.0987959" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 12 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="24 : 12 : 1"
+       inkscape:persp3d-origin="12 : 8 : 1"
+       id="perspective3630" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6093">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop6095" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop6097" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6056"
+       inkscape:collect="always">
+      <stop
+         id="stop6058"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1" />
+      <stop
+         id="stop6060"
+         offset="1"
+         style="stop-color:#d3d7cf;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6056"
+       id="linearGradient5966"
+       x1="13.84057"
+       y1="9.1469946"
+       x2="4.4762087"
+       y2="-0.6407786"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6093"
+       id="linearGradient6099"
+       x1="11.5625"
+       y1="11.125"
+       x2="11.5625"
+       y2="8.1793661"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.5,0,6)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3460"
+       id="linearGradient3683"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1101512,0,4.7915781)"
+       x1="44.287689"
+       y1="-39.951534"
+       x2="36.799889"
+       y2="-39.951534" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7658"
+       id="linearGradient3685"
+       gradientUnits="userSpaceOnUse"
+       x1="43.882969"
+       y1="-42.861526"
+       x2="39.987103"
+       y2="-42.861526" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3460"
+       id="linearGradient3687"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1101512,0,4.348586)"
+       x1="44.287689"
+       y1="-39.951534"
+       x2="36.799889"
+       y2="-39.951534" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7658"
+       id="linearGradient3689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,4.0216698)"
+       x1="43.882969"
+       y1="-42.861526"
+       x2="39.987103"
+       y2="-42.861526" />
+    <linearGradient
+       gradientTransform="matrix(0.7142859,0,0,0.5,-0.5714286,1.9999993)"
+       gradientUnits="userSpaceOnUse"
+       y2="8.1793661"
+       x2="11.5625"
+       y1="11.125"
+       x1="11.5625"
+       id="linearGradient2586"
+       xlink:href="#linearGradient6093"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(0.6923078,0,0,0.7231216,-0.3076923,-0.5846825)"
+       gradientUnits="userSpaceOnUse"
+       y2="-0.6407786"
+       x2="4.4762087"
+       y1="9.1469946"
+       x1="13.84057"
+       id="linearGradient2584"
+       xlink:href="#linearGradient6056"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       id="perspective2569"
+       inkscape:persp3d-origin="8 : 5.3333333 : 1"
+       inkscape:vp_z="16 : 8 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 8 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3460"
+       id="linearGradient2437"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1101512,0,4.7915781)"
+       x1="44.287689"
+       y1="-39.951534"
+       x2="36.799889"
+       y2="-39.951534" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7658"
+       id="linearGradient2439"
+       gradientUnits="userSpaceOnUse"
+       x1="43.882969"
+       y1="-42.861526"
+       x2="39.987103"
+       y2="-42.861526" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3460"
+       id="linearGradient2441"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1101512,0,4.348586)"
+       x1="44.287689"
+       y1="-39.951534"
+       x2="36.799889"
+       y2="-39.951534" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7658"
+       id="linearGradient2443"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,4.0216698)"
+       x1="43.882969"
+       y1="-42.861526"
+       x2="39.987103"
+       y2="-42.861526" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7658"
+       id="linearGradient2446"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6995928,0,0,0.9030326,-17.378453,29.075599)"
+       x1="43.882969"
+       y1="-42.861526"
+       x2="39.987103"
+       y2="-42.861526" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3460"
+       id="linearGradient2449"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6558683,0,0,0.728113,-15.618892,18.520083)"
+       x1="44.287689"
+       y1="-39.951534"
+       x2="36.799889"
+       y2="-39.951534" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7658"
+       id="linearGradient2452"
+       gradientUnits="userSpaceOnUse"
+       x1="43.882969"
+       y1="-42.861526"
+       x2="39.987103"
+       y2="-42.861526"
+       gradientTransform="matrix(0.6558683,0,0,0.6558683,-15.618892,15.667983)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3460"
+       id="linearGradient2455"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6558683,0,0,0.728113,-15.618892,18.810627)"
+       x1="44.287689"
+       y1="-39.951534"
+       x2="36.799889"
+       y2="-39.951534" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7658"
+       id="linearGradient2457"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7014147,0,0,0.9184803,-17.458402,27.116392)"
+       x1="43.882969"
+       y1="-42.861526"
+       x2="39.987103"
+       y2="-42.861526" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="28.870159"
+     inkscape:cx="10.240631"
+     inkscape:cy="5.0417817"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     width="24px"
+     height="24px"
+     inkscape:window-width="1214"
+     inkscape:window-height="926"
+     inkscape:window-x="2"
+     inkscape:window-y="0"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2600" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4913">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       inkscape:label="Layer 1"
+       id="g2588"
+       transform="translate(0,-3.124997e-2)">
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="rect4923"
+         d="M 2.6650374,7.5 L 13.334962,7.5 L 15.5,10.027675 L 15.5,14.821727 C 15.5,15.214803 15.178132,15.53125 14.77832,15.53125 L 1.2216791,15.53125 C 0.82186963,15.53125 0.49999997,15.214803 0.49999997,14.821727 L 0.49999997,10.027675 L 2.6650374,7.5 z"
+         style="opacity:1;fill:#babdb6;fill-opacity:1;stroke:#555753;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccc"
+         id="path5915"
+         d="M 1.5,14.53125 L 1.5,10.424446 L 3.0764563,8.5 L 12.892294,8.5 L 14.5,10.424446 L 14.5,14.53125 L 1.5,14.53125 z"
+         style="opacity:0.49456524;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccc"
+         id="rect5952"
+         d="M 4.1994739,0.50000003 L 11.800527,0.50000003 C 12.188035,0.50000003 12.499999,0.82585053 12.499999,1.2306065 L 12.499999,8.4999998 L 3.5,8.4999998 L 3.5,1.2306065 C 3.5,0.82585053 3.8119654,0.50000003 4.1994739,0.50000003 z"
+         style="opacity:1;fill:url(#linearGradient5966);fill-opacity:1;stroke:#797c76;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0.3157346"
+         rx="0.3157346"
+         y="1.5"
+         x="4.5"
+         height="7"
+         width="7"
+         id="rect5968"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0"
+         rx="0"
+         y="3"
+         x="5"
+         height="0.99999994"
+         width="6"
+         id="rect5975"
+         style="opacity:0.26630435;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0"
+         rx="0"
+         y="5"
+         x="5"
+         height="0.99999994"
+         width="6"
+         id="rect5979"
+         style="opacity:0.26630435;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="6"
+         x="3"
+         height="2.0000002"
+         width="10"
+         id="rect6091"
+         style="opacity:0.19565214;fill:url(#linearGradient6099);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         id="path5911"
+         d="M 2,10.492194 L 14,10.492194"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path5913"
+         d="M 3.016466,8.5 L 12.983534,8.5"
+         style="fill:none;fill-rule:evenodd;stroke:#555753;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path4922"
+         d="M 3.03125,12.5 L 13,12.5"
+         style="fill:none;fill-rule:evenodd;stroke:#555753;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="g2473">
+      <path
+         transform="matrix(0.6448281,0,0,0.6292846,-14.498837,-15.243863)"
+         d="M 46.49227,41.613941 A 6.0987959,6.2534757 0 1 1 34.294679,41.613941 A 6.0987959,6.2534757 0 1 1 46.49227,41.613941 z"
+         sodipodi:ry="6.2534757"
+         sodipodi:rx="6.0987959"
+         sodipodi:cy="41.613941"
+         sodipodi:cx="40.393475"
+         id="path2155"
+         style="fill:#61635f;fill-opacity:1;stroke:#555753;stroke-width:1.02960598;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         transform="matrix(0.5373509,0,0,0.5244034,-10.157457,-10.879337)"
+         d="M 46.49227,41.613941 A 6.0987959,6.2534757 0 1 1 34.294679,41.613941 A 6.0987959,6.2534757 0 1 1 46.49227,41.613941 z"
+         sodipodi:ry="6.2534757"
+         sodipodi:rx="6.0987959"
+         sodipodi:cy="41.613941"
+         sodipodi:cx="40.393475"
+         id="path3046"
+         style="opacity:0.11442787;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.23553479;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path3048"
+         d="M 11.550546,7.3358741 C 9.5607277,7.3358741 7.9432692,8.9520274 7.9432699,10.94315 C 11.000296,13.818432 12.85442,8.9866238 15.157821,10.94315 C 15.157821,8.9520261 13.540364,7.3358754 11.550546,7.3358741 z"
+         style="opacity:0.1243781;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.23553479;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
+      <g
+         id="g2459">
+        <rect
+           style="opacity:0.76119403;fill:url(#linearGradient2455);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
+           id="rect3406"
+           width="4.9041333"
+           height="2.3370304"
+           x="8.5200682"
+           y="-14.030796"
+           transform="matrix(0,1,-1,0,0,0)" />
+        <rect
+           style="fill:url(#linearGradient2457);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
+           id="rect3408"
+           width="4.7148356"
+           height="2.1843958"
+           x="8.6069241"
+           y="-13.952147"
+           transform="matrix(0,1,-1,0,0,0)" />
+        <rect
+           style="opacity:0.76119403;fill:url(#linearGradient2449);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
+           id="rect3434"
+           width="4.9041333"
+           height="2.3370304"
+           x="8.5200682"
+           y="-11.393109"
+           transform="matrix(0,1,-1,0,0,0)" />
+        <rect
+           style="fill:url(#linearGradient2446);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
+           id="rect3436"
+           width="4.702589"
+           height="2.1476567"
+           x="8.6191702"
+           y="-11.302214"
+           transform="matrix(0,1,-1,0,0,0)" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/gtk/stock-icons/24/gtk-print-paused.png b/gtk/stock-icons/24/gtk-print-paused.png
new file mode 100644 (file)
index 0000000..da6df48
Binary files /dev/null and b/gtk/stock-icons/24/gtk-print-paused.png differ
diff --git a/gtk/stock-icons/24/gtk-print-paused.svg b/gtk/stock-icons/24/gtk-print-paused.svg
new file mode 100644 (file)
index 0000000..82e398c
--- /dev/null
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="24"
+   height="24"
+   id="svg4908"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docbase="/home/andreas/project/gtk/24"
+   sodipodi:docname="gtk-print-pause.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/andreas/project/gtk/24/gtk-print.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90"
+   sodipodi:modified="true">
+  <defs
+     id="defs4910">
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7658"
+       id="linearGradient3441"
+       gradientUnits="userSpaceOnUse"
+       x1="43.882969"
+       y1="-42.861526"
+       x2="39.987103"
+       y2="-42.861526"
+       gradientTransform="translate(0,4.0216698)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3460"
+       id="linearGradient3456"
+       x1="44.287689"
+       y1="-39.951534"
+       x2="36.799889"
+       y2="-39.951534"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1101512,0,4.348586)" />
+    <linearGradient
+       id="linearGradient7658"
+       inkscape:collect="always">
+      <stop
+         id="stop7660"
+         offset="0"
+         style="stop-color:#d3d7cf" />
+      <stop
+         id="stop7662"
+         offset="1"
+         style="stop-color:#eeeeec" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7658"
+       id="linearGradient3447"
+       gradientUnits="userSpaceOnUse"
+       x1="43.882969"
+       y1="-42.861526"
+       x2="39.987103"
+       y2="-42.861526" />
+    <linearGradient
+       id="linearGradient3460">
+      <stop
+         id="stop3462"
+         offset="0"
+         style="stop-color:#343533;stop-opacity:1;" />
+      <stop
+         id="stop3464"
+         offset="1"
+         style="stop-color:#343533;stop-opacity:0.5;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3460"
+       id="linearGradient3458"
+       x1="44.287689"
+       y1="-39.951534"
+       x2="36.799889"
+       y2="-39.951534"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1101512,0,4.7915781)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3061">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop3063" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop3065" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3061"
+       id="radialGradient2559"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.025362,0,-1.055427)"
+       cx="40.393475"
+       cy="41.613941"
+       fx="40.393475"
+       fy="41.613941"
+       r="6.0987959" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 12 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="24 : 12 : 1"
+       inkscape:persp3d-origin="12 : 8 : 1"
+       id="perspective3630" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6093">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop6095" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop6097" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6057">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop6059" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="stop6061" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6009">
+      <stop
+         style="stop-color:#edeeec;stop-opacity:1;"
+         offset="0"
+         id="stop6011" />
+      <stop
+         style="stop-color:#d4d7d2;stop-opacity:1"
+         offset="1"
+         id="stop6013" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6056"
+       inkscape:collect="always">
+      <stop
+         id="stop6058"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1" />
+      <stop
+         id="stop6060"
+         offset="1"
+         style="stop-color:#d3d7cf;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6056"
+       id="linearGradient5966"
+       x1="13.84057"
+       y1="9.1469946"
+       x2="4.4762087"
+       y2="-0.6407786"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6009"
+       id="linearGradient6015"
+       x1="19.959274"
+       y1="14.042688"
+       x2="20.003927"
+       y2="17.972033"
+       gradientUnits="userSpaceOnUse" />
+    <filter
+       inkscape:collect="always"
+       x="-0.061363636"
+       width="1.1227273"
+       y="-0.27"
+       height="1.54"
+       id="filter6053">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.675"
+         id="feGaussianBlur6055" />
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6057"
+       id="linearGradient6063"
+       x1="21.027927"
+       y1="15.601459"
+       x2="21.027927"
+       y2="18.950628"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6093"
+       id="linearGradient6099"
+       x1="11.5625"
+       y1="11.125"
+       x2="11.5625"
+       y2="8.1793661"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.5,0,6)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3460"
+       id="linearGradient3683"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1101512,0,4.7915781)"
+       x1="44.287689"
+       y1="-39.951534"
+       x2="36.799889"
+       y2="-39.951534" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7658"
+       id="linearGradient3685"
+       gradientUnits="userSpaceOnUse"
+       x1="43.882969"
+       y1="-42.861526"
+       x2="39.987103"
+       y2="-42.861526" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3460"
+       id="linearGradient3687"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.1101512,0,4.348586)"
+       x1="44.287689"
+       y1="-39.951534"
+       x2="36.799889"
+       y2="-39.951534" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7658"
+       id="linearGradient3689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,4.0216698)"
+       x1="43.882969"
+       y1="-42.861526"
+       x2="39.987103"
+       y2="-42.861526" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="12.34558"
+     inkscape:cy="11.36666"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     width="24px"
+     height="24px"
+     inkscape:window-width="647"
+     inkscape:window-height="702"
+     inkscape:window-x="0"
+     inkscape:window-y="29" />
+  <metadata
+     id="metadata4913">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g3632">
+      <rect
+         ry="1.4601421"
+         rx="1.4601421"
+         y="19"
+         x="1"
+         height="5"
+         width="22"
+         id="rect6019"
+         style="opacity:0.23913042;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter6053)" />
+      <rect
+         ry="1.4601421"
+         rx="1.4601421"
+         y="19.579716"
+         x="2.5"
+         height="2.9202843"
+         width="18.906809"
+         id="rect5895"
+         style="opacity:1;fill:#babdb6;fill-opacity:1;stroke:#555753;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="rect4923"
+         d="M 4.5310526,10.532094 L 19.468949,10.532094 L 22.500002,14.131469 L 22.500002,19.489649 C 22.500002,20.049384 22.049386,20.5 21.489651,20.5 L 2.5103509,20.5 C 1.9506166,20.5 1.5000001,20.049384 1.5000001,19.489649 L 1.5000001,14.131469 L 4.5310526,10.532094 z "
+         style="fill:url(#linearGradient6015);fill-opacity:1.0;stroke:#555753;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1" />
+      <rect
+         ry="0.31573462"
+         rx="0.31573462"
+         y="14"
+         x="2"
+         height="6"
+         width="20"
+         id="rect5972"
+         style="opacity:0.23913043;fill:url(#linearGradient6063);fill-opacity:1.0;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccc"
+         id="path6071"
+         d="M 2.5,14.446516 L 2.5,19.534838 L 21.522081,19.534838 L 21.522081,14.446516 L 18.988038,11.477919 L 4.9216374,11.477919 L 2.5,14.446516 z "
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.3423913" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path5970"
+         d="M 3.5310529,14.5 L 20.5,14.5"
+         style="opacity:0.38586957;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
+      <rect
+         y="16.5"
+         x="4.5"
+         height="2"
+         width="14.999998"
+         id="rect6065"
+         style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#888a85;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccc"
+         id="rect5952"
+         d="M 6.5103508,1.5 L 17.48965,1.5 C 18.049384,1.5 18.500001,1.9506165 18.500001,2.5103509 L 18.500001,12.563146 L 5.5,12.563146 L 5.5,2.5103509 C 5.5,1.9506165 5.9506165,1.5 6.5103508,1.5 z "
+         style="fill:url(#linearGradient5966);fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1" />
+      <rect
+         ry="0.3157346"
+         rx="0.31573462"
+         y="2.4999998"
+         x="6.5"
+         height="10"
+         width="11"
+         id="rect5968"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0"
+         rx="0"
+         y="4"
+         x="8"
+         height="0.99999976"
+         width="8"
+         id="rect5975"
+         style="opacity:0.26630435;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0"
+         rx="0"
+         y="6"
+         x="8"
+         height="0.99999976"
+         width="8"
+         id="rect5979"
+         style="opacity:0.26630435;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0"
+         rx="0"
+         y="8"
+         x="8"
+         height="0.99999976"
+         width="8"
+         id="rect5987"
+         style="opacity:0.26630435;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         id="path6069"
+         d="M 4.541708,12.5 L 19.5,12.5"
+         style="fill:none;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
+      <rect
+         y="10"
+         x="5"
+         height="2"
+         width="14"
+         id="rect6091"
+         style="opacity:0.19565214;fill:url(#linearGradient6099);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       id="g3472"
+       transform="matrix(0.9567392,0,0,0.9567392,-22.044959,-21.966195)">
+      <path
+         transform="matrix(0.983167,0,0,0.959468,1.7825924,0.5718055)"
+         d="M 46.49227,41.613941 A 6.0987959,6.2534757 0 1 1 34.294679,41.613941 A 6.0987959,6.2534757 0 1 1 46.49227,41.613941 z"
+         sodipodi:ry="6.2534757"
+         sodipodi:rx="6.0987959"
+         sodipodi:cy="41.613941"
+         sodipodi:cx="40.393475"
+         id="path2155"
+         style="fill:#61635f;fill-opacity:1;stroke:#555753;stroke-width:1.02960597999999992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057000000004;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         transform="matrix(0.819297,0,0,0.799556,8.4018784,7.2263815)"
+         d="M 46.49227,41.613941 A 6.0987959,6.2534757 0 1 1 34.294679,41.613941 A 6.0987959,6.2534757 0 1 1 46.49227,41.613941 z"
+         sodipodi:ry="6.2534757"
+         sodipodi:rx="6.0987959"
+         sodipodi:cy="41.613941"
+         sodipodi:cx="40.393475"
+         id="path3046"
+         style="opacity:0.11442786;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.23553479000000022;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057000000004;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path3048"
+         d="M 41.499991,34.999048 C 38.466123,34.999048 35.99999,37.463191 35.999991,40.499048 C 40.661027,44.88298 43.488004,37.51594 46.999991,40.499048 C 46.999991,37.463189 44.53386,34.99905 41.499991,34.999048 z"
+         style="opacity:0.12437811;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.23553479000000022;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057000000004;stroke-opacity:1" />
+      <g
+         id="g3466">
+        <rect
+           style="opacity:0.76119403;fill:url(#linearGradient3683);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
+           id="rect3406"
+           width="7.4773145"
+           height="3.5632617"
+           x="36.804585"
+           y="-45.28162"
+           transform="matrix(0,1,-1,0,0,0)" />
+        <rect
+           style="fill:url(#linearGradient3685);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
+           id="rect3408"
+           width="6.7218947"
+           height="2.3782718"
+           x="37.161076"
+           y="-44.713577"
+           transform="matrix(0,1,-1,0,0,0)" />
+        <rect
+           style="opacity:0.76119403;fill:url(#linearGradient3687);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
+           id="rect3434"
+           width="7.4773145"
+           height="3.5632617"
+           x="36.804585"
+           y="-41.259949"
+           transform="matrix(0,1,-1,0,0,0)" />
+        <rect
+           style="fill:url(#linearGradient3689);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
+           id="rect3436"
+           width="6.7218947"
+           height="2.3782718"
+           x="37.161076"
+           y="-40.691906"
+           transform="matrix(0,1,-1,0,0,0)" />
+      </g>
+    </g>
+  </g>
+</svg>
index 0aaf83e5350613be346e2743f7d735edf1de7572..7be6434cdeb486fe06d13b2bd829f495099d9636 100644 (file)
@@ -1058,6 +1058,7 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
       const gchar *reason_msg = NULL;
       gchar *reason_msg_desc = NULL;
       gchar *tmp_msg = NULL;
+      gchar *tmp_msg2 = NULL;
       gint printer_state_reason_level = 0; /* 0 - none, 1 - report, 2 - warning, 3 - error */
       gboolean interested_in = FALSE;
       gboolean found = FALSE;
@@ -1093,6 +1094,8 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
           N_("Printer '%s' may not be connected."),
           N_("There is a problem on printer '%s'.")
         };
+      gboolean is_paused = FALSE;
+      gboolean is_accepting_jobs = TRUE;
       
       /* Skip leading attributes until we hit a printer...
        */
@@ -1127,6 +1130,12 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
               {
                 if (strcmp (attr->values[i].string.text, "none") != 0)
                   {
+                    /* Sets is_paused flag for paused printer. */
+                    if (strcmp (attr->values[i].string.text, "paused") == 0)
+                      {
+                        is_paused = TRUE;
+                      }
+
                     interested_in = FALSE;
                     for (j = 0; j < G_N_ELEMENTS (reasons); j++)
                         if (strncmp (attr->values[i].string.text, reasons[j], strlen (reasons[j])) == 0)
@@ -1166,6 +1175,13 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
           state = attr->values[0].integer;
         else if (strcmp (attr->name, "queued-job-count") == 0)
           job_count = attr->values[0].integer;
+        else if (strcmp (attr->name, "printer-is-accepting-jobs") == 0)
+          {
+            if (attr->values[0].boolean == 1)
+              is_accepting_jobs = TRUE;
+            else
+              is_accepting_jobs = FALSE;
+          }
         else
          {
            GTK_NOTE (PRINTING,
@@ -1262,6 +1278,9 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
       else
        g_object_ref (printer);
 
+      gtk_printer_set_is_paused (printer, is_paused);
+      gtk_printer_set_is_accepting_jobs (printer, is_accepting_jobs);
+
       if (!gtk_printer_is_active (printer))
         {
          gtk_printer_set_is_active (printer, TRUE);
@@ -1288,6 +1307,19 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
       status_changed |= gtk_printer_set_location (printer, location);
       status_changed |= gtk_printer_set_description (printer, description);
 
+      if (state_msg != NULL && strlen (state_msg) == 0)
+        {
+          if (is_paused && !is_accepting_jobs)
+            tmp_msg2 = g_strdup ( N_("Paused ; Rejecting Jobs"));
+          if (is_paused && is_accepting_jobs)
+            tmp_msg2 = g_strdup ( N_("Paused"));
+          if (!is_paused && !is_accepting_jobs)
+            tmp_msg2 = g_strdup ( N_("Rejecting Jobs"));
+
+          if (tmp_msg2 != NULL)
+            state_msg = tmp_msg2;
+        }
+
       /* Set description of the reason and combine it with printer-state-message. */
       if ( (reason_msg != NULL))
         {
@@ -1317,10 +1349,14 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
         }
 
       status_changed |= gtk_printer_set_state_message (printer, state_msg);
+      status_changed |= gtk_printer_set_is_accepting_jobs (printer, is_accepting_jobs);
 
       if (tmp_msg != NULL)
         g_free (tmp_msg);
 
+      if (tmp_msg2 != NULL)
+        g_free (tmp_msg2);
+
       if (reason_msg_desc != NULL)
         g_free (reason_msg_desc);
 
@@ -1330,6 +1366,8 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
         gtk_printer_set_icon_name (printer, "gtk-print-error");
       else if (printer_state_reason_level == 2)
         gtk_printer_set_icon_name (printer, "gtk-print-warning");
+      else if (gtk_printer_is_paused (printer))
+        gtk_printer_set_icon_name (printer, "gtk-print-paused");
       else
         gtk_printer_set_icon_name (printer, "gtk-print");
 
@@ -1376,7 +1414,8 @@ cups_request_printer_list (GtkPrintBackendCups *cups_backend)
       "printer-state-message",
       "printer-state-reasons",
       "printer-state",
-      "queued-job-count"
+      "queued-job-count",
+      "printer-is-accepting-jobs"
     };
  
   if (cups_backend->list_printers_pending ||